﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Collections;
using System.Windows.Forms;

//Autor: Arturo Serna 

namespace Librerias
{
    public class ENMensaje:ENBase
    {
        #region variables
        private int id;
        private DateTime fecha;
        private string emisor;
        private string receptor;
        private string asunto;
        private string mensaje;
        private string archivo;
        private int puntuacion;
        private int leido;
        private CADMensaje cad = new CADMensaje();
        #endregion

        #region get set
        public int Id
        {
            get { return id; }
            set { id = value; }
        }
        public DateTime Fecha
        {
            get { return fecha; }
            set { fecha = value; }
        }
        public string Emisor
        {
            get { return emisor; }
            set { emisor = value; }
        }

        public string Receptor
        {
            get { return receptor; }
            set { receptor = value; }
        }
        public string Asunto
        {
            get { return asunto; }
            set { asunto = value; }
        }
        public string Mensaje
        {
            get { return mensaje; }
            set { mensaje = value; }
        }
        public string Archivo
        {
            get { return archivo; }
            set { archivo = value; }
        }
        public int Puntuacion
        {
            get { return puntuacion; }
            set { puntuacion = value; }
        }
        public int Leido
        {
            get { return leido; }
            set { leido = value; }
        }

        #endregion

        #region constructores
        /// <summary>
        /// Constructor a partir de un usuario
        /// </summary>
        /// <param name="usuario">usuario</param>
        public ENMensaje(string usuario)
        {
            id = 0;
            fecha = DateTime.Now;
            emisor="";
            receptor = usuario;
            asunto = "";
            mensaje = "";
            archivo = "";
            puntuacion = 0;
        }

        /// <summary>
        /// Constructor a partir de un emisor y un receptor
        /// </summary>
        /// <param name="Emisor">emisor</param>
        /// <param name="Receptor">receptor</param>
        public ENMensaje(string Emisor, string Receptor)
        {
            id = 0;
            fecha = DateTime.Now;
            emisor = Emisor;
            receptor = Receptor;
            asunto = "";
            mensaje = "";
            archivo = "";
            puntuacion = 0;
        }

        /// <summary>
        /// Const parametrizado
        /// </summary>
        /// <param name="unemisor">emisor</param>
        /// <param name="unreceptor">receptor</param>
        /// <param name="unasunto">asunto</param>
        /// <param name="unmensaje">mensaje</param>
        /// <param name="unarchivo">archivo</param>
        public ENMensaje(string unemisor, string unreceptor, string unasunto, string unmensaje, string unarchivo)
        {
            id = 0;
            fecha = DateTime.Now;
            emisor = unemisor;
            receptor = unreceptor;
            asunto = unasunto;
            mensaje = unmensaje;
            archivo = unarchivo;
            puntuacion = 0;
            leido = 0;
        }
        #endregion

        #region enlaces cad
        /// <summary>
        /// nos devuelve lo que hay en la bandeja de entrada
        /// </summary>
        /// <returns>DataTable con mensajes</returns>
        public DataTable BandejaEntrada()
        {
            return cad.BandejaEntrada(receptor);
        }

        /// <summary>
        /// nos devuelve mensajes enviados
        /// </summary>
        /// <returns>DataTable</returns>
        public DataTable MensajesEnviados()
        {
            return cad.MensajesEnviados(receptor);
        }

        /// <summary>
        /// nos devuelve conversacion segun asunto
        /// </summary>
        /// <returns>DataTable</returns>
        public DataTable GetConversacionByAsunto()
        {
            return cad.GetConversacionByAsunto(asunto, receptor, emisor);
        }

        /// <summary>
        /// envia un mensaje con archivo incluido
        /// </summary>
        /// <param name="barra">barra progreso</param>
        public void Enviar(ProgressBar barra)
        {
            cad.NuevoMensaje(fecha, emisor, receptor, asunto, mensaje, archivo,barra);
        }


        /// <summary>
        /// envia un mensaje con archivo incluido
        /// </summary>
        /// <param name="barra">barra progreso</param>
        public void Enviar()
        {
            cad.NuevoMensaje(fecha, emisor, receptor, asunto, mensaje, archivo);
        }

        /// <summary>
        /// Elimina un mensaje segun su id
        /// </summary>
        /// <param name="identificador">id</param>
        public void Eliminar(int identificador)
        {
            cad.EliminarMensaje(identificador);
        }

        /// <summary>
        /// Elimina varios segun ids (varios)
        /// </summary>
        /// <param name="identificador"></param>
        public void Eliminar(ArrayList identificador)
        {
            cad.EliminarMensaje(identificador);
        }

        /// <summary>
        /// Marca un mensaje cómo leído
        /// </summary>
        /// <param name="identificador">id</param>
        public void MarcarLeido(ArrayList identificador)
        {
            cad.MarcarLeido(identificador);
        }

        /// <summary>
        /// Marca cómo no leído
        /// </summary>
        /// <param name="identificador">id</param>
        public void MarcarNoLeido(ArrayList identificador)
        {
            cad.MarcarNoLeido(identificador);
        }

        /// <summary>
        /// descargar mensaje
        /// </summary>
        /// <param name="ruta">ruta</param>
        /// <param name="salida">dónde</param>
        /// <param name="barra">con qué barra</param>
        /// <returns>Si ha sido éxito</returns>
        public bool Descargar(string ruta, string salida, ProgressBar barra)
        {
            return cad.Descargar(ruta, salida,barra);
        }

        /// <summary>
        /// Busca mensajes mediante una cadena por un critorio
        /// </summary>
        /// <param name="texto">cadena</param>
        /// <param name="criterio">criterio</param>
        /// <returns></returns>
        public DataTable Buscar(string texto, int criterio)
        {
            return cad.Buscar(receptor, texto, criterio);
        }

        /// <summary>
        /// Nos dice los mensajes totales
        /// </summary>
        /// <returns>número</returns>
        public int NumMensajesTotales()
        {
            return cad.NumMensajesTotales(receptor);
        }

        /// <summary>
        /// Mensajes no leídos totales
        /// </summary>
        /// <returns>número</returns>
        public int NumMensajesNoLeidosTotales()
        {
            return cad.NumMensajesNoLeidosTotales(receptor);
        }

        /// <summary>
        /// mensajes nuevos recibidos
        /// </summary>
        /// <returns>número</returns>
        public int NumRecibidos()
        {
            return cad.NumRecibidos(receptor);
        }

        /// <summary>
        /// Recibidos no leídos
        /// </summary>
        /// <returns>número/returns>
        public int NumRecibidosNoLeidos()
        {
            return cad.NumRecibidosNoLeidos(receptor);
        }
        #endregion
    }
}
